SANA app edition | Environment, connection methods, and test status
===================================================================

Applies to: the Windows x64 app folder in this ZIP (SANA 2.0)
Version: 2.0 (internal version 2.0.0)
Updated: 2026-10-02

Environment
-----------
- Windows 10/11 x64 (64-bit). Extract the complete ZIP and run the EXE
  inside the folder.
- Mac and Android editions are planned for later updates. This document
  describes the Windows edition.
- The browser edition in the Browser folder uses Chrome or Edge features for
  Bluetooth and USB serial connections.
- The EXE is unsigned. On first launch Windows SmartScreen may show a
  warning. Choose "More info", then "Run anyway".

Test status
-----------
The author has confirmed operation and stopping with the VORZE Piston and
The Handy in the author's environment.
Whether SANA works with your own device: please try the free trial edition first.
Other models have a communication implementation (try the free trial
edition to check them on your own device).
A model name in the list below does not guarantee its movement, travel
range, or stopping.

Connection methods and requirements
-----------------------------------
- Bluetooth (without Intiface): Requires PC Bluetooth and a device listed
  below. Intiface Central is not needed.
- USB serial: Implements TCode v0.3 L0 stroke-axis control at 115200 baud.
  OSR2 and SR6 are examples, not a claim to control all axes. SANA does not
  automatically read the device's saved range. It sends DSTOP to stop.
  Try the free trial edition to see how your model and firmware behave.
- Intiface Central: Start a separate Intiface Central server, version
  3.0.3 or later. SANA's default URL is ws://localhost:12345. This route
  requires a linear axis supporting position with duration under Buttplug
  Message Spec v4. Vibration-only, rotation-only, and speed-only stroke
  control are outside this route. Seeing a device in Central does not
  mean that connection, motion, or mid-motion stopping works in SANA.

Bluetooth models (communication implementations)
------------------------------------------------
Model/family                         Note
VORZE SA / VORZE Piston              Position/speed commands; no sensor
                                     confirmation of physical stopping.
Fleshlight Launch                    Kiiroo v2 communication format.
Kiiroo Onyx 2                        Kiiroo v2 communication format.
Kiiroo Onyx+ / Onyx 2.1 / Keon       Shared format. Onyx+ uses contraction;
                                     do not equate it with piston travel.
Kiiroo Titan 1.1                     A communication format exists, but
                                     Titan is a vibration device, not a
                                     supported piston stroker.
Kiiroo Keon Wi-Fi edition / Keon 2   SANA uses its Bluetooth connection.
The Handy firmware 3                 Different protocol and stop behavior
                                     from firmware 4 / Handy 2.
The Handy firmware 4 / Handy 2       Uses a dedicated stop command.
Lovense Solace Pro                   Only Solace Pro; other Lovense models
                                     are outside this Bluetooth connection.
OSSM                                 Initialization changes the mode and
                                     sets depth/stroke/speed to 100.
ServeU                               Sends position and encoded speed.
Fleshy Thrust Sync                   Sends position and move duration.
Joyroid Loob                         Sends position and move duration.
Umove Mira / Vero / Nexo             Sends interpolated positions.

The list does not guarantee availability for each firmware, suitability
of SANA's pattern/travel/speed model, or physical stopping. In particular,
do not treat Titan as a piston device or Onyx+ as a reciprocating piston.

Differences between connection methods, and limits
--------------------------------------------------
- Via Intiface, a VORZE Piston may report a narrower internal position
  range than the Bluetooth connection, depending on the Central device
  configuration. This numeric difference does not measure physical
  travel. Recheck both ends on the real device after changing methods.
- An OK response to SANA's Intiface StopCmd does not prove an in-progress
  movement was interrupted on the device. With your own device and
  connection method, use the trial to check mid-motion stop,
  disconnection, and exit.
- Intiface initialization may move some Kiiroo devices or Joyroid Loob.
  SANA's Bluetooth connection intentionally omits that initial movement,
  but this is not a guarantee that the physical device stays still on
  connection.
- Solace Pro uses different stopping methods via Bluetooth and
  Intiface. Neither method can be called certain to stop; check it with
  the trial.
- OSSM initialization may change the device's operating mode and limits.
  Do not assume its knobs and stored settings remain as they were.
- The on-screen position bar and stop status are not sensors for actual
  position or physical stopping. First test away from your body, learn
  the device's own stop method, and check behavior on connection, small
  movement, and stopping mid-motion.
